#include <stdio.h>
#include "lrc.h"
#include "tools.h"
#include "my_player.h"
TIME m_time = {0, 0}; // 初始化时间
int main(int argc, char const *argv[])
{

    char **data = NULL;
    char *file_name = "俩俩相忘.lrc";
    char *src = read_src_file(file_name);
    int len = strtok_lrc_buf(src, &data);
    int s_time = 0;
    printf("len=%d\n", len);
    int head_len = 0;
    LRC *head = lrc_head_resolve(&data, &head_len);
    if (NULL == head)
    {
        perror("lrc_head_resolve");
        return 0;
    }
    head = lrc_resolve(&data, head_len, len, head);

    set_bg_color(COLOR_WHITE);       // 设置背景颜色
    print_song_head(head, head_len); // 打印歌曲头部信息
    time_printf(m_time, head_len);   // 打印时间
    LRC *start = head;
    for (int i = 0; i < head_len; i++, start = start->next)
        ;
    lrc_printf(start, NULL, head_len); // 前5句歌词
    LRC *pb = NULL, *start_point;
    mplayer_play("./song/俩俩相望.mp3"); // 播放歌曲
    while (1) // 最后一个节点了退出循环
    {
        time_printf(m_time, head_len);   // 打印时间
        pb = link_search(start, s_time); // 在链表中查找节点
        if (pb != NULL)                  // 找到节点显示
        {
            start_point = find_start_point(start, pb); // start_point 为开始打印的节点，pb为正在唱的节点
            print_song_head(head, head_len);           // 清屏 打印歌曲信息
            time_printf(m_time, head_len);             // 打印时间
            lrc_printf(start_point, pb, head_len);     // 从start_point开始打印五个节点的信息,pb是要高亮显示的节点
            if (pb->next == NULL)                      // 如果找到的节点是尾节点，退出程序
                break;
        }

        usleep(1000 * 1000);
        s_time = s_time + 1;
        m_clock(&m_time); // 时钟成员(分钟min和秒sec)赋值
        // 打印进度条
        //print_space(m_time, head_len);
    }
    link_free(head);
    cusor_show(); // 播放完显示光标

    return 0;
}
